package main

import (
	"fmt"
	"strconv"
	"strings"
)

/*
*
字符串常用的函数
看到:200页
*/
func main() {
	fmt.Println("Hello, World!name:")

	fmt.Println("====字符串转换整数====")
	n, err := strconv.Atoi("1234")
	fmt.Printf("结果:%v,错误:%v\n", n, err)
	if err != nil {
		fmt.Println("转换失败, 错误为:", err)
	} else {
		fmt.Printf("转换成功, 结果为:%v 类型为:%T \n", n, n)
	}

	fmt.Println("====整数转字符串====")
	str := strconv.Itoa(1234)
	fmt.Println("结果:", str)

	fmt.Println("====字符串转字节数组====")
	var bytes = []byte("hello")
	fmt.Printf("结果:%v,类型为:%T\n", bytes, bytes)

	fmt.Println("====字节数组转字符串====")
	str = string([]byte{97, 98, 99})
	fmt.Printf("结果:%v,类型为:%T\n", str, str)

	fmt.Println("====10进制转2,8,16进制====")
	/* 参数1:整数,参数2:进制 */
	str = strconv.FormatInt(7, 2)
	fmt.Printf("结果:%v,类型为:%T\n", str, str)
	str = strconv.FormatInt(10, 8)
	fmt.Printf("结果:%v,类型为:%T\n", str, str)
	str = strconv.FormatInt(31, 16)
	fmt.Printf("结果:%v,类型为:%T\n", str, str)

	fmt.Println("====查找子串是否在指定的字符串中====")
	var conFlag = strings.Contains("hello", "he1")
	fmt.Printf("结果:%v,类型为:%T\n", conFlag, conFlag)

	fmt.Println("====不区分大小写的字符串比较====")
	var eqFlag = strings.EqualFold("hello", "Hello")
	fmt.Printf("结果:%v,类型为:%T\n", eqFlag, eqFlag)

	fmt.Println("====返回子串在字符串第一次出现的 index 值，如果没有返回-1====")
	var index = strings.Index("hello", "e")
	fmt.Printf("结果:%v,类型为:%T\n", index, index)

	fmt.Println("====返回子串在字符串最后一次出现的 index 值，如果没有返回-1====")
	var lastIndex = strings.LastIndex("hello", "l")
	fmt.Printf("结果:%v,类型为:%T\n", lastIndex, lastIndex)

	fmt.Println("====将指定的子串替换成 另外一个子串====可以指定你希望替换几个，如果 n=-1 表示全部替换")
	var newStr = strings.Replace("hello", "l", "中", -1)
	fmt.Printf("结果:%v,类型为:%T\n", newStr, newStr)

	fmt.Println("====按照指定的某个字符，为分割标识，将一个字符串拆分成字符串数组：")
	var strs = strings.Split("192.168.1.1", ".")
	fmt.Printf("结果:%v,类型为:%T\n", strs, strs)

	fmt.Println("====将字符串的字母进行大小写的转换")
	var upperStr = strings.ToUpper("hello")
	fmt.Printf("结果:%v,类型为:%T\n", upperStr, upperStr)
	var lowerStr = strings.ToLower("HELLO")
	fmt.Printf("结果:%v,类型为:%T\n", lowerStr, lowerStr)

	fmt.Println("====将字符串左右两边的空格去掉")
	/* 参数2:会把指定的字符串全部去掉. */
	var trimStr = strings.Trim("  hello  ", " ")
	fmt.Printf("结果:%v,类型为:%T\n", trimStr, trimStr)

	fmt.Println("====将字符串左边空格去掉")
	var trimLeftStr = strings.TrimLeft("  hello  ", " ")
	fmt.Printf("结果:%v,类型为:%T\n", trimLeftStr, trimLeftStr)

	fmt.Println("====将字符串右边空格去掉")
	var trimRightStr = strings.TrimRight("  hello  ", " ")
	fmt.Printf("结果:%v,类型为:%T\n", trimRightStr, trimRightStr)

	fmt.Println("====判断字符串是否以指定的字符串开头====")
	var hasPrefix = strings.HasPrefix("hello", "he")
	fmt.Printf("结果:%v,类型为:%T\n", hasPrefix, hasPrefix)

	fmt.Println("====判断字符串是否以指定的字符串结尾====")
	var hasSuffix = strings.HasSuffix("hello", "lo")
	fmt.Printf("结果:%v,类型为:%T\n", hasSuffix, hasSuffix)

}
